/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package edu.cmu.cs.webapp.ioms.models;

import java.util.Date;

import org.eclipse.emf.common.util.EList;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Purchase Order</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getOrder_id <em>Order id</em>}</li>
 *   <li>{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getOrder_date <em>Order date</em>}</li>
 *   <li>{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getShipping_address <em>Shipping address</em>}</li>
 *   <li>{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getShipping_city <em>Shipping city</em>}</li>
 *   <li>{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getShipping_state <em>Shipping state</em>}</li>
 *   <li>{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getShipping_country <em>Shipping country</em>}</li>
 *   <li>{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getExpected_shipping_date <em>Expected shipping date</em>}</li>
 *   <li>{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getStatus <em>Status</em>}</li>
 *   <li>{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getClient <em>Client</em>}</li>
 *   <li>{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getItems <em>Items</em>}</li>
 * </ul>
 * </p>
 *
 * @see edu.cmu.cs.webapp.ioms.models.IOMSPackage#getPurchaseOrder()
 * @model
 * @generated
 */
public interface PurchaseOrder extends EObject {
	/**
	 * Returns the value of the '<em><b>Order id</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Order id</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Order id</em>' attribute.
	 * @see #setOrder_id(int)
	 * @see edu.cmu.cs.webapp.ioms.models.IOMSPackage#getPurchaseOrder_Order_id()
	 * @model
	 * @generated
	 */
	int getOrder_id();

	/**
	 * Sets the value of the '{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getOrder_id <em>Order id</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Order id</em>' attribute.
	 * @see #getOrder_id()
	 * @generated
	 */
	void setOrder_id(int value);

	/**
	 * Returns the value of the '<em><b>Order date</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Order date</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Order date</em>' attribute.
	 * @see #setOrder_date(Date)
	 * @see edu.cmu.cs.webapp.ioms.models.IOMSPackage#getPurchaseOrder_Order_date()
	 * @model
	 * @generated
	 */
	Date getOrder_date();

	/**
	 * Sets the value of the '{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getOrder_date <em>Order date</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Order date</em>' attribute.
	 * @see #getOrder_date()
	 * @generated
	 */
	void setOrder_date(Date value);

	/**
	 * Returns the value of the '<em><b>Shipping address</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Shipping address</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Shipping address</em>' attribute.
	 * @see #setShipping_address(String)
	 * @see edu.cmu.cs.webapp.ioms.models.IOMSPackage#getPurchaseOrder_Shipping_address()
	 * @model
	 * @generated
	 */
	String getShipping_address();

	/**
	 * Sets the value of the '{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getShipping_address <em>Shipping address</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Shipping address</em>' attribute.
	 * @see #getShipping_address()
	 * @generated
	 */
	void setShipping_address(String value);

	/**
	 * Returns the value of the '<em><b>Shipping city</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Shipping city</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Shipping city</em>' attribute.
	 * @see #setShipping_city(String)
	 * @see edu.cmu.cs.webapp.ioms.models.IOMSPackage#getPurchaseOrder_Shipping_city()
	 * @model
	 * @generated
	 */
	String getShipping_city();

	/**
	 * Sets the value of the '{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getShipping_city <em>Shipping city</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Shipping city</em>' attribute.
	 * @see #getShipping_city()
	 * @generated
	 */
	void setShipping_city(String value);

	/**
	 * Returns the value of the '<em><b>Shipping state</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Shipping state</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Shipping state</em>' attribute.
	 * @see #setShipping_state(String)
	 * @see edu.cmu.cs.webapp.ioms.models.IOMSPackage#getPurchaseOrder_Shipping_state()
	 * @model
	 * @generated
	 */
	String getShipping_state();

	/**
	 * Sets the value of the '{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getShipping_state <em>Shipping state</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Shipping state</em>' attribute.
	 * @see #getShipping_state()
	 * @generated
	 */
	void setShipping_state(String value);

	/**
	 * Returns the value of the '<em><b>Shipping country</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Shipping country</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Shipping country</em>' attribute.
	 * @see #setShipping_country(String)
	 * @see edu.cmu.cs.webapp.ioms.models.IOMSPackage#getPurchaseOrder_Shipping_country()
	 * @model
	 * @generated
	 */
	String getShipping_country();

	/**
	 * Sets the value of the '{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getShipping_country <em>Shipping country</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Shipping country</em>' attribute.
	 * @see #getShipping_country()
	 * @generated
	 */
	void setShipping_country(String value);

	/**
	 * Returns the value of the '<em><b>Expected shipping date</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Expected shipping date</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Expected shipping date</em>' attribute.
	 * @see #setExpected_shipping_date(Date)
	 * @see edu.cmu.cs.webapp.ioms.models.IOMSPackage#getPurchaseOrder_Expected_shipping_date()
	 * @model
	 * @generated
	 */
	Date getExpected_shipping_date();

	/**
	 * Sets the value of the '{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getExpected_shipping_date <em>Expected shipping date</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Expected shipping date</em>' attribute.
	 * @see #getExpected_shipping_date()
	 * @generated
	 */
	void setExpected_shipping_date(Date value);

	/**
	 * Returns the value of the '<em><b>Status</b></em>' attribute.
	 * The literals are from the enumeration {@link edu.cmu.cs.webapp.ioms.models.OrderStatus}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Status</em>' attribute isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Status</em>' attribute.
	 * @see edu.cmu.cs.webapp.ioms.models.OrderStatus
	 * @see #setStatus(OrderStatus)
	 * @see edu.cmu.cs.webapp.ioms.models.IOMSPackage#getPurchaseOrder_Status()
	 * @model
	 * @generated
	 */
	OrderStatus getStatus();

	/**
	 * Sets the value of the '{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getStatus <em>Status</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Status</em>' attribute.
	 * @see edu.cmu.cs.webapp.ioms.models.OrderStatus
	 * @see #getStatus()
	 * @generated
	 */
	void setStatus(OrderStatus value);

	/**
	 * Returns the value of the '<em><b>Client</b></em>' reference.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Client</em>' reference isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Client</em>' reference.
	 * @see #setClient(Client)
	 * @see edu.cmu.cs.webapp.ioms.models.IOMSPackage#getPurchaseOrder_Client()
	 * @model
	 * @generated
	 */
	Client getClient();

	/**
	 * Sets the value of the '{@link edu.cmu.cs.webapp.ioms.models.PurchaseOrder#getClient <em>Client</em>}' reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Client</em>' reference.
	 * @see #getClient()
	 * @generated
	 */
	void setClient(Client value);

	/**
	 * Returns the value of the '<em><b>Items</b></em>' reference list.
	 * The list contents are of type {@link edu.cmu.cs.webapp.ioms.models.LineItem}.
	 * <!-- begin-user-doc -->
	 * <p>
	 * If the meaning of the '<em>Items</em>' reference list isn't clear,
	 * there really should be more of a description here...
	 * </p>
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Items</em>' reference list.
	 * @see edu.cmu.cs.webapp.ioms.models.IOMSPackage#getPurchaseOrder_Items()
	 * @model upper="100"
	 * @generated
	 */
	EList<LineItem> getItems();

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model itemsUpper="100"
	 * @generated
	 */
	void setItems(EList<LineItem> items);

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @model
	 * @generated
	 */
	void accept();

} // PurchaseOrder
